  P1_Q3 AT %QX11.3: BOOL; (*  *)
  P1_Q7 AT %IX11.3: BOOL; (* Input *)
  P1_Q4 AT %IX11.2: BOOL; (* Input: *)
  P2_I6 AT %QX11.15: BOOL; (* Output:  *)
  P2_Q6 AT %IX11.14: BOOL; (* Input: P2 Done Signal *)
  P2_Q7 AT %IX11.15: BOOL; (* Input: P2 Piece return signal *)
  P3_WORK AT %QX12.9: BOOL; (* Output: NEW PIECE / START *)
  P3_Q2 AT %QX12.10: BOOL; (*  *)
  P3_Q3 AT %QX12.11: BOOL; (*  *)
  P3_IN0 AT %IX12.8: BOOL; (*  *)
  P3_IN1 AT %IX12.9: BOOL; (*  *)
  P3_Q7 AT %IX12.10: BOOL; (* Input: P3 Done Signal *)
  P3_IN3 AT %IX12.11: BOOL; (*  *)
  P4_Q3 AT %QX14.3: BOOL; (*  *)
  P4_Q4 AT %IX14.2: BOOL; (* Input:  *)
  P4_IN3 AT %IX14.3: BOOL; (*  *)
  P1_PULSE AT %IX10.8: BOOL; (* Input: Tray pulses sensor *)
  P1_RDY AT %IX10.9: BOOL; (* Input: Detects if a tray is at P1 *)
  P1_PIECE AT %IX10.10: BOOL; (* Input: Detects if there is a piece *)
  P2_PULSE AT %IX11.4: BOOL; (* Input: Tray pulses sensor *)
  P2_RDY AT %IX11.5: BOOL; (* Input: Detects if a tray is at P2 *)
  P2_PIECE AT %IX11.6: BOOL; (* Input: Detects if there is a piece *)
  P3_PULSE AT %IX12.0: BOOL; (* Input: Tray pulses sensor *)
  P3_RDY AT %IX12.1: BOOL; (* Input: Detects if a tray is at P3 *)
  P4_PULSE AT %IX13.8: BOOL; (* Input: Tray pulses sensor *)
  P4_PIECE AT %IX13.10: BOOL; (* Input: Detects if there is a piece *)
  P4_RDY AT %IX13.9: BOOL; (* Input: Detects if a tray is at P4 *)
  P1_BUMP AT %QX10.12: BOOL; (* Output: Activates P1 stop bump *)
  P2_BUMP AT %QX11.8: BOOL; (* Output: Activates P2 stop bump *)
  P3_BUMP AT %QX12.4: BOOL; (* Output: Activates P3 stop bump *)
  P4_BUMP AT %QX13.12: BOOL; (* Output: Activates p4 stop bump *)
  BELT_FWD AT %QX0.6: BOOL; (* Output: Makes the conveyor belt move *)
  BELT_ON AT %QX0.7: BOOL; (* Output: Turn on the conveyor belt *)
  L_O AT %QX0.1: BOOL; (* Led: O *)
  L_I AT %QX0.0: BOOL; (* Led: I *)
  L_Red AT %QX0.3: BOOL; (* Led: Red Light *)
  C_P1 AT %MW10: WORD; (* Counter: Position 1 current tray *)
  C_P2 AT %MW11: WORD; (* Counter: Position 2 current tray *)
  P2_I5 AT %QX12.8: BOOL; (* Output: *)
  C_P3 AT %MW12: WORD; (* Counter: Position 3 current tray *)
  C_P4 AT %MW13: WORD; (* Counter: Position 4 current tray *)
  S_RUN AT %MX63.0: BOOL; (* State: Run *)
  F_P4_W AT %MX1.3: BOOL; (* Flag: Position 4 Working *)
  B_I AT %IX0.0: BOOL; (* Button: I *)
  B_O AT %IX0.1: BOOL; (* Button: O *)
  F_P3_D AT %MX2.2: BOOL; (* Flag: Position 3 Done *)
  F_P2_D AT %MX2.1: BOOL; (* Flag: Position 2 Done *)
  Mode1 AT %MX3.0: BOOL; (*  *)
  Mode2 AT %MX3.1: BOOL; (*  *)
  Mode3 AT %MX3.2: BOOL; (*  *)
  debounc1 AT %MX3.3: BOOL; (* Create a delay for debouncing *)
  p3_piece AT %MX4.0: BOOL; (* Flag: Tells position 3 if there is p *)
  debounc2 AT %MX3.4: BOOL; (* Create a delay for debouncing *)
  F_Type AT %MW5: WORD; (* Flag: Piece Type 1 --> 2 *)
  F_inProg AT %MX4.1: BOOL; (* Flag: Station with work in progress *)
